These teachings relate to the recording of data on storage media such as, but not limited to, optical tape used for high-density data or information storage. The user data to be recorded on such medium need to be protected in the best possible manner against write and/or read defects as well as possible aging defects of the recording medium.
In particular these teachings relate to the strategy and methodology by which the various error sources are taken into account and efficient methods are applied to compensate substantially entirely for such errors and/or diminish the probabilities of those errors to propagate into the read-back user data. Reference is made to U.S. patent application Ser. Nos. 11/504,754 and 11/551,396, both of which are incorporated by reference herein, for a general understanding of an optical tape recording system. In the optical tape system described in the above references data are recorded by a modulated laser beam that moves in the longitudinal direction of the tape along paths of “virtual tracks” that also contain precise coordinate information with respect to the particular track numbers and particular block numbers where a specific recording or reading action is to take place. Reference is also made to the conventional art of adding error correction capability to the user data before recording, such that errors in the read-back data stream can be corrected. (A more detailed description of such conventional art of adding error correction capability is given below.) Typically user data and error correction data are intermingled and interleaved in order to randomize the effect of isolated “drop-out” events along the tracks resulting in error bursts and thus maximizing the correction capability of the particular error correction code deployed. Depending on the chosen length of the error correction codewords and depending on the chosen depth of interleaving of these codewords, a minimum block size of data results that will need to be written to a track in a single recording action. Increasing burst error correction power requires increasing block sizes of uninterrupted recording. In addition performing start and stop actions of the tape at the beginning and ending of each data block is highly undesirable for reasons of throughput (sustainable data rates) and for reasons of unwanted wear-and-tear of the tape transport mechanism and tape itself. Thus, there is a need for a “streamer mode” operation where recording and reading of data takes places during one single pass of the tape.
It is also desirable that a verification step takes places immediately after recording of data to detect any data that is not read back correctly. Based on the so detected errors a decision can be made to immediately rewrite part or all of the detected errors to a different part of the tape. Such process will ensure that the majority, or in the limit all, of the original data that was subject to a recording request is present without any read-back failures at the time this initial recording session took place. This will ensure that the majority, or in the limit the entirety, of the error correction capacity will be reserved for read errors that may occur in the future as a result of aging errors in the recording layer of the tape or the result of variations in the read heads (for example if the tape is read in the future with a different head than was used for the recording).
In the case of optical tape, it is therefore a need to provide a method that allows uninterrupted “single-pass” recording of long segments of single tracks, representing one or more blocks of protected data. One track would be divided into several data blocks as shown in FIG. 1. In the limit one block could be chosen to equal one entire track over the full length of the tape. It is a further need to be able to verify the correctness of each recorded block immediately by performing a read verification process either during the same recording pass or during a separate single-pass verification of the just recorded block. If errors are detected during this verification process, it will then be necessary to rewrite all or part of those data segments that have failed at another location in order to ensure that most or all original data is available without the need for any correction at that time, thus leaving the full error correction power for any read-back variations at future times. The rewritten data that is recorded at another location will need to be protected as well and therefore it is typically recorded subject to the same error correction methodology as used for the original data. For smaller block sizes it has therefore been a practice to re-write any blocks in their entirety once the errors detected during the verification step are exceeding a certain threshold. In case of larger blocks (in the limit: one entire track) this will quickly become an unwieldy process, creating extreme inefficiency in terms of data throughput and extra space required.
Therefore, in summary there is a need for a rewrite system and methodology that does not require to re-record an entire block or an entire codeword, but instead deploys a simple method to ensure substantially no read errors at the time of the initial recording session by capturing, storing and rewriting only those meaningful subsegments of a data block where verification errors were detected, thus saving significant data space, while at the same time the rewritten subsegments are protected by the same error correction system as used for the original data. There is also a need that the rewrite system maintains a full uninterrupted “streamer mode” operation for the recording and read-back of each (large) data block, thus preventing serious degradation of data throughput rates. In the limit of one block per track this methodology needs to allow single pass recording, verification and read-back of a full track length.
For reference, a description is provided below of the conventional practice of forming error correction codewords and the practice of writing data in an interleaved manner to the tape media. For the purpose of the error correction system the bit stream of incoming user data is segmented into symbols of x bits each with x≧2. Frequently a symbol is chosen to contain 8 bits (one byte). As shown in FIG. 2, one symbol is graphically represented as a square cell, and the original user data is fed into a memory in preparation of an initial recording session. The full memory block is laid out as a rectangular field of symbols. One part of the memory on the left (in yellow) is reserved to store the user data. Another part of the memory on the right (in blue) is reserved for error correction data that is to be added. User symbols are fed into the block memory in a horizontal sequential mode as indicated by the arrows in FIG. 2. After the first row of user data has been stored, an unique calculation is performed by the error correction encoder to generate a certain number (n) of error correction symbols that are then also stored in the first row of the block, thus forming the first codeword. Typically Reed-Solomon codes are used for the formation of such codewords. The characteristic of such Reed-Solomon codewords is that it forms a new data set where the distinction between original user data and added error correction data becomes irrelevant. In case n is chosen to be an even number, the so constructed codeword has the key property that upon decoding it can detect and correct n/2 symbol errors. The symbol errors may occur at any location in the codeword. Another characteristic of such Reed-Solomon codewords is that their maximum length (in number of symbols) is given by (2x−1), where x is again the number of bits per symbol. In the same manner all k codewords are constructed as defined by the block size.
After completion of a full data block stored in a temporary memory as shown in FIG. 2, the data are written to the track in a different order than the order in which the original user data were received. As shown in FIG. 3 by the direction of the arrows, data symbols are recorded in the track by taking them in a vertical direction from the temporary block memory. This process will result in an interleaving of the symbols of all codewords. If there are k codewords in a block, then the interleave depth is also k, and the distance of any two subsequent symbols in any given horizontal codeword is such that they will be separated by (k−1) symbols belonging to other codewords.
The process of interleaving is generally deployed to mitigate the effects of large “dropouts” in a recorded track by breaking these up into symbol errors that are distributed over several codewords. To illustrate this process, three segments of errors are depicted by the areas labeled 655 as shown in FIG. 3. Each corresponds to a contiguous segment of the track where errors are occurring upon read-back due for example to imperfections in the recording layer of the medium. After read-back and refilling of a second temporary memory block, identical to the one represented in FIG. 3, all codewords can be corrected that do not contain more than n/2 symbol errors (for n=even). For example if n=20 and k=500, then a block that would contain only one contiguous burst error of 10×500=5000 symbols and no other errors, could still be fully corrected.
As an example, if x=8 and n=20, codewords will have a maximum length of 255 bytes, composed of 235 user bytes and 20 error correction bytes. This would equip each codeword with an inherent correction ability of a maximum of 10 defective bytes regardless at which position these would occur in the codeword. Beyond 10 bytes in error the codeword would not be correctable. As a further example assume that we would require that a single error burst of 10 centimeter physical length on the tape must be correctable and let us also assume that the linear recording density is one byte per 2 um (this is the approximate linear density of a DVD recording). Then 10 centimeter length of a track segment would contain 50,000 (100,000/2) bytes. With codewords having a capability to correct 10 bytes, the data block will need to have 5,000 (50,000/10) codewords in order to achieve the desired interleave depth (k=5,000 in FIGS. 2 and 3). This means that one block contains 235×5,000=1,175,000 bytes of user data (1.175 MB) and the total size of the data block to be recorded is 1.275 MB. This is equivalent to a length of 2.55 meters for one data block. On a tape of 500 meters length there would thus be approx 196 blocks per track in this example.